package uit.comstore.model.blo;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import uit.comstore.model.entity.ProductUnit;
import uit.comstore.utils.HibernateSessionFactory;

public class ProductUnitBLO {
	@SuppressWarnings("unchecked")
	public List<ProductUnit> list() {
		List<ProductUnit> productUnits = null;
		Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession();	
		session.beginTransaction();
		Query query = session.createQuery("from ProductUnit");
		productUnits = query.list();
		session.getTransaction().commit();
		return productUnits;
	}
	
	public ProductUnit getById(Long id){
		ProductUnit productUnit = null;
		Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession();	
		session.beginTransaction();
		productUnit = (ProductUnit) session.get(ProductUnit.class, id);
		session.getTransaction().commit();
		return productUnit;
	}
	
	public ProductUnit add(ProductUnit productUnit) {
		Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		session.save(productUnit);
		session.getTransaction().commit();
		return productUnit;
	}
	
	public ProductUnit delete(Long id) {
		Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		ProductUnit productUnit = (ProductUnit) session.load(ProductUnit.class, id);
		if(null != productUnit) {
            session.delete(productUnit);
        }
		session.getTransaction().commit();
		return productUnit;
	}
	
	public ProductUnit update(ProductUnit unit){
		Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		ProductUnit productUnit = (ProductUnit)session.get(ProductUnit.class, unit.getId());
		productUnit.setTitle(unit.getTitle());
		session.update(productUnit);
		session.getTransaction().commit();
		session.close();
		return productUnit;
	}
}
